@包含、“./关卡.q”
；0空白，1墙，2人物，3箱子，4得分点，5完成
#关卡 = 0
#记录集合 = @拷贝【#关卡集合#0】
#人物坐标 = 【0,0】
#方向 = 2
#得分 = 0
#目标分 = 0

@显示窗口、《窗口 #名=“#窗”，#标题=“推箱子”，#宽=310，#高=380 》

#单元集合 = 【】
当 #行：0，#行 小于 10，#行 自加 1 ｛
    #行集合：【】
    @追加【#单元集合，#行集合】
    当 #列：0，#列 小于 10，#列 自加 1｛
        #单元 = @生成图形、《图片 #源=“./images/empty.png”，#宽=30，#高=30，#X=30*#列，#Y=30*#行，#适应=“缩放”》
        @追加【#行集合，#单元】
        #窗@加子【#单元】
    ｝
｝

#人物单元 = @生成图形、《图片 #源=“./images/right.png”，#宽=30，#高=30，#X=0，#Y=0，#适应=“缩放”》
#窗@加子【#人物单元】

#通关标签 = @生成图形、《标签 #文本=“通关啦！”，#字号=24，#可见=“隐藏”》
#窗@加子【#通关标签】


#重玩按钮 = @生成图形、《按钮 #文本=“重玩本关”，#字号=14，#Y=300》
#窗@加子【#重玩按钮】

@更新界面 = @【】｛
    #得分 = 0
    #目标分 = 0
    遍历 #单元集合 为 #行｛
        遍历 #行 为 #单元｛
            #单元#源=“./images/empty.png”
        ｝
    ｝
    当 #行：0，#行 小于 @取长度【#记录集合】，#行 自加 1｛
        #行记录：#记录集合#行
        当 #列：0，#列 小于 @取长度【#行记录】，#列 自加 1｛
            #记录：#记录集合#行#列
            #单元：#单元集合#行#列
            如果 #记录 等于 1｛
                #单元#源 = “./images/wall.png”
            ｝再则 #记录 等于 2｛
                #人物坐标 = 【#列，#行】
                #人物单元#X = 30*#列
                #人物单元#Y = 30*#行
                #记录集合#行#列 = 0
                #单元#源 = “./images/empty.png”
            ｝再则 #记录 等于 3｛
                #单元#源 = “./images/box.png”
            ｝再则 #记录 等于 4｛
                #单元#源 = “./images/ball.png”
                #目标分 自加 1
            ｝再则 #记录 等于 5｛
                #单元#源 = “./images/box_done.png”
            ｝否则｛
                #单元#源 = “./images/empty.png”
            ｝
        ｝
    ｝
｝

@更新界面【】

#重玩按钮@命令 = @【】｛
    #记录集合 = @拷贝【#关卡集合#关卡】
    @更新界面【】
｝

#窗@键盘按下命令 = @【#按键】｛
    #下一坐标：【】
    匹配 #按键｛
        “Up” ｛
            #方向 = 1
            #下一坐标 = 【#人物坐标#0，#人物坐标#1-1】
            
        ｝
        “Right” ｛
            #方向 = 2
            #下一坐标 = 【#人物坐标#0+1，#人物坐标#1】
        ｝
        “Down” ｛
            #方向 = 3
            #下一坐标 = 【#人物坐标#0，#人物坐标#1+1】
        ｝
        “Left” ｛
            #方向 = 4
            #下一坐标 = 【#人物坐标#0-1，#人物坐标#1】
        ｝
    ｝
    #记录：#记录集合#【#下一坐标#1】#【#下一坐标#0】
    如果 #记录 等于 0 或 #记录 等于 4｛
        #人物坐标 = #下一坐标
        匹配 #方向 ｛
            1 ｛#人物单元#源 = “./images/up.png”｝
            2 ｛#人物单元#源 = “./images/right.png”｝
            3 ｛#人物单元#源 = “./images/down.png”｝
            4 ｛#人物单元#源 = “./images/left.png”｝
        ｝
        #人物单元#X = #人物坐标#0 * 30
        #人物单元#Y = #人物坐标#1 * 30
    ｝再则 #记录 等于 3 或 #记录 等于 5｛
        #推动坐标 = 【】
        匹配 #方向 ｛
            1 ｛#推动坐标 = 【#下一坐标#0，#下一坐标#1-1】｝
            2 ｛#推动坐标 = 【#下一坐标#0+1，#下一坐标#1】｝
            3 ｛#推动坐标 = 【#下一坐标#0，#下一坐标#1+1】｝
            4 ｛#推动坐标 = 【#下一坐标#0-1，#下一坐标#1】｝
        ｝
        如果 #推动坐标#1 小于 @取长度【#记录集合】
        且 #推动坐标#0 小于 @取长度【#记录集合#【#推动坐标#1】】
        且 （#记录集合#【#推动坐标#1】#【#推动坐标#0】 等于 0 或 #记录集合#【#推动坐标#1】#【#推动坐标#0】 等于 4）｛
            如果 #记录 等于 3 ｛
                #单元集合#【#下一坐标#1】#【#下一坐标#0】#源 = “./images/empty.png”
                #记录集合#【#下一坐标#1】#【#下一坐标#0】 = 0
            ｝
            如果 #记录 等于 5 ｛
                #单元集合#【#下一坐标#1】#【#下一坐标#0】#源 = “./images/ball.png”
                #记录集合#【#下一坐标#1】#【#下一坐标#0】 = 4
                #得分 自减 1
            ｝
            
            如果 #记录集合#【#推动坐标#1】#【#推动坐标#0】 等于 0 ｛
                #单元集合#【#推动坐标#1】#【#推动坐标#0】#源 = “./images/box.png”
                #记录集合#【#推动坐标#1】#【#推动坐标#0】 = 3
            ｝
            如果 #记录集合#【#推动坐标#1】#【#推动坐标#0】 等于 4 ｛
                #单元集合#【#推动坐标#1】#【#推动坐标#0】#源 = “./images/box_done.png”
                #记录集合#【#推动坐标#1】#【#推动坐标#0】 = 5
                #得分 自加 1
                
                如果 #得分 大于等于 #目标分｛
                    @延时任务【1000，｛
                        #关卡 自加 1
                        如果 #关卡 小于 @取长度【#关卡集合】｛
                            #记录集合 = @拷贝【#关卡集合#关卡】
                            @更新界面【】
                        ｝否则｛
                            #通关标签#可见=“可见”
                        ｝
                    ｝】
                ｝
                
            ｝
            #人物坐标 = #下一坐标
            匹配 #方向 ｛
                1 ｛#人物单元#源 = “./images/up.png”｝
                2 ｛#人物单元#源 = “./images/right.png”｝
                3 ｛#人物单元#源 = “./images/down.png”｝
                4 ｛#人物单元#源 = “./images/left.png”｝
            ｝
            #人物单元#X = #人物坐标#0 * 30
            #人物单元#Y = #人物坐标#1 * 30
        ｝
        
    ｝
    
｝










